//package com.dify.tool.common.config;
//
//import cn.hutool.core.collection.CollectionUtil;
//import cn.hutool.core.util.StrUtil;
//import com.dify.tool.common.constant.CommonStatus;
//import com.dify.tool.common.exception.BizException;
//import com.dify.tool.common.model.DefaultResult;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.validation.FieldError;
//import org.springframework.web.bind.MethodArgumentNotValidException;
//import org.springframework.web.bind.annotation.ExceptionHandler;
//import org.springframework.web.bind.annotation.RestControllerAdvice;
//
//import java.util.List;
//import java.util.stream.Collectors;
//
///**
// * @author shl
// * @date 2024-07-03
// * @description 全局异常
// */
//@Slf4j
//@RestControllerAdvice
//public class GlobalExceptionHandler {
//
//    /**
//     * 返回业务异常
//     *
//     * @param e
//     * @return
//     */
//    @ExceptionHandler(value = BizException.class)
//    public DefaultResult bizExceptionHandler(BizException e) {
//        log.error("业务异常 code[{}] msg[{}]", e.getCode(), e.getMessage());
//        return DefaultResult.fail(e.getCode(), e.getMessage());
//    }
//
//    /**
//     * 返回顶级异常
//     *
//     * @param e
//     * @return
//     */
//    @ExceptionHandler(Exception.class)
//    public DefaultResult runtimeExceptionHandler(Exception e) {
//        log.error("服务端异常 {}", e.getMessage());
//        return DefaultResult.fail(CommonStatus.FAILURE.getCode(), e.getMessage());
//    }
//
//    /**
//     * 参数验证异常
//     *
//     * @param e
//     * @return
//     */
//    @ExceptionHandler(MethodArgumentNotValidException.class)
//    public DefaultResult handlerValidator(MethodArgumentNotValidException e) {
//        List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors();
//        String errorMsg = getAllErrorMsg(fieldErrors);
//        log.warn("参数校验错误 {}", errorMsg);
//        return DefaultResult.fail(CommonStatus.VALIDATE_ERROR.getCode(), errorMsg);
//    }
//
//    /**
//     * 返回全部错误，并以逗号隔开
//     *
//     * @param fieldErrorList validator验证错误列表
//     * @return
//     */
//    private String getAllErrorMsg(List<FieldError> fieldErrorList) {
//        String errorMsg = StrUtil.EMPTY;
//        if (CollectionUtil.isNotEmpty(fieldErrorList)) {
//            List<String> errors = fieldErrorList.stream()
//                    .map(FieldError::getDefaultMessage).collect(Collectors.toList());
//            errorMsg = CollectionUtil.join(errors, ",");
//        }
//        return errorMsg;
//    }
//}
